package syf.rank;

import java.util.Arrays;

public class ChooseRank {
    public static void main(String[] args) {
        int max=8000000;
        int[] arr=new int[max];
        //8万个随机的数组排序
        for (int i=0;i<max;i++){
            arr[i]=(int)(Math.random()*100);
        }
//        System.out.println(Arrays.toString(arr));
        long now=System.currentTimeMillis();
        arr=choose(arr);
        long end=System.currentTimeMillis();
//        System.out.println(Arrays.toString(arr));
        System.out.println(end-now);//1627ms左右
    }
    /**
     * 选择排序,每次将最小值放在最左边
     * @param arr 要排序的数组
     * @return 排序完成后的数组
     */
    public static int[] choose(int[] arr){
        int tmp;//交换时的中间值
        int min;//每轮当中的最小值
        int index;//记录最小值的下标
        //要进行排序的轮数，为数组长度减1
        for (int i=0;i<arr.length-1;i++){
            min=arr[i];
            index=i;
            //每次将最小的与左边的值交换
            for (int j=i+1;j<arr.length;j++){
                if (min>arr[j]) {
                    min = arr[j];
                    index=j;
                }
            }
            //一轮完成后
            tmp=arr[i];
            arr[i]=arr[index];
            arr[index]=tmp;
//            System.out.println( Arrays.toString(arr));
        }
        return arr;
    }
}
